# Date: 2023-5-13
# Author: Generated by GoCodeo.


from unittest.mock import mock_open, patch

import pytest

from autogpt.commands.audio_text import read_audio_from_file


@pytest.fixture
def mock_read_audio(mocker):
    return mocker.patch("autogpt.commands.audio_text.read_audio")


class TestReadAudioFromFile:
    def test_positive_read_audio_from_file(self, mock_read_audio):
        # Positive test
        mock_read_audio.return_value = "This is a sample text."
        mock_file_data = b"Audio data"
        m = mock_open(read_data=mock_file_data)

        with patch("builtins.open", m):
            result = read_audio_from_file("test_audio.wav")
            assert result == "This is a sample text."
            m.assert_called_once_with("test_audio.wav", "rb")

    def test_negative_read_audio_from_file(self, mock_read_audio):
        # Negative test
        mock_read_audio.return_value = "This is a sample text."
        mock_file_data = b"Audio data"
        m = mock_open(read_data=mock_file_data)

        with patch("builtins.open", m):
            result = read_audio_from_file("test_audio.wav")
            assert result != "Incorrect text."
            m.assert_called_once_with("test_audio.wav", "rb")

    def test_error_read_audio_from_file(self):
        # Error test
        with pytest.raises(FileNotFoundError):
            read_audio_from_file("non_existent_file.wav")

    def test_edge_empty_audio_file(self, mock_read_audio):
        # Edge test
        mock_read_audio.return_value = ""
        mock_file_data = b""
        m = mock_open(read_data=mock_file_data)

        with patch("builtins.open", m):
            result = read_audio_from_file("empty_audio.wav")
            assert result == ""
            m.assert_called_once_with("empty_audio.wav", "rb")
